#include "options.h"
#include <cstdlib>
#include <stdio.h>
#include <cstring>
#include <cmath>
#include <stdlib.h>
#include <fstream>
#include <iostream>
#include <fstream>
#include <sstream>
#include <sys/stat.h>
#include <sys/types.h>
#include "batchVac.h"
using namespace std;

//Entrer un chiffre a partir du clavier
double donnerChoix(){
    double chiffre;
    string input;
    while (true) {
        getline(cin, input);
        stringstream myStream(input);
        if (myStream >> chiffre)
            break;
        cout << "Chiffre non-exact, essayez une fois encore!" << endl;
    }
    return chiffre;
    // Le fin
}

//Options sur simulation d'une seule population ou de k polulations
int opterTypeProgramme(){
    int choix;
    cout<<"--------------------------------------------\n";
    cout<<"Donnez votre choix sur quelle type programme!\n";
    cout<<"1. Programme marchant les simulations du modele SEIR\n";
    cout<<"2. Programme marchant les simulations avec vaccination \n";
    cout<<"3. Programme marchant les simulations de vaccinations pour explorer les politiques de vaccinations \n";
    cout<<"4. Programme marchant pour verifier la synchronie entre les populations locales \n";
    cout<<"Donner votre type de simulation 1 ou 2 ou 3 ou 4: typePRO = ";
    choix = donnerChoix();
    return choix;
}

//Options pour changer les valeurs des parametres
int opterChangerParam(){
    int choix;
    cout<<"--------------------------------------------\n";
    cout<<"Donnez votre choix pour changer les valeurs des parametres ou non!\n";
    cout<<"1. Simulation avec les valeurs des parametres, par defaut\n";
    cout<<"2. Simulation à modifier les valeurs des parametres\n";
    cout<<"Donner votre type de simulation 1 ou 2: typeCHANGE = ";
    choix = donnerChoix();
    return choix;
}

//Options sur simulation d'une seule population ou de k polulations
int opterSimulation(){
    int choix;
    cout<<"--------------------------------------------\n";
    cout<<"Donnez votre choix sur quelle simulation!\n";
    cout<<"1. Simulation d'une seule population \n";
    cout<<"2. Simulation de k populations, c'est-a-dire la simulation spatiale \n";
    cout<<"3. Simulation pour verifier la synchronie entre les populations locales\n";
    cout<<"Donner votre type de simulation 1 ou 2 ou 3: typeSIM = ";
    choix = donnerChoix();
    return choix;
}

/*******************************/
//Cas ou il y a k villes
//Parametre speciales : topologie,
int opterTopologie(){
    int choix;
    cout<<"--------------------------------------------\n";
    cout<<"Donnez votre choix sur quelle topologie!\n";
    cout<<"0. Topologie en ^iles \n";
    cout<<"1. Topologie en cercles \n";
    cout<<"2. Topologie en reseaux \n";
    cout<<"Donner votre topologie 0 ou 1 ou 2: typeTOPO = ";
    choix = donnerChoix();
    return choix;
}

/******************************/
//Parametre speciales : parametres populations synchronie ou non
int opterParamPopulation(){
    int choix;
    cout<<"--------------------------------------------\n";
    cout<<"Donnez votre choix sur la synchronie!\n";
    cout<<"1. Villes toutes identiques \n";
    cout<<"2. Villes de synchronie selon I0, alors S0, E0, R0, N0 \n";
    cout<<"3. Villes quelconques \n";
    cout<<"Donner votre type de synchronie 1 ou 2 ou 3: typeSYNCH = ";
    choix = donnerChoix();
    return choix;
}
/*****************************/
